It is well-known to use digital storage facilities and a programmed digital computer to provide, respectively, a data base storage medium and a data base manager. The storage facilities serve to store large amounts of information in digital form while the data base manager is a computer program facility for reading, writing and searching the data base.
It is convenient to define a "record" as a basic data base unit. Each record consists of a number of "fields" which store specific information which constitutes the content of the record. A number of similar records comprises a "file." A "transaction" is a set of steps or procedures which take the data base file from one consistent state to another consistent state by modifying the fields in the records.
It is often necessary to change records in a data base, sometimes to correct errors, and sometimes to ref1ect changes in the physical world such as additions or deletions to inventory or consumption of resources. Indeed, with large data bases having many users, it is possible to have more than one user simultaneously access a record and attempt to change that record. This possibility of multiple simultaneous access must be prevented to guard against ambiguity concerning the contents of the data base. That is, data base records which are in use by one user must be locked out of use for all other users. This is the well-known data locking problem which arises whenever there is a concurrency of multiple transactions.
It is, of course, possible to lock out the entire data base while any user is accessing that data base. This is not a practical solution for large data bases with many users because an unacceptably low number of serial transactions can take place against the data base. The system throughput can then become inadequate to fill the requirements of the application. In an airline reservation system, for example, reservation posting for one day's fights might well take longer than the number of hours in a day.
On the other hand, only the record being actually accessed can be locked out, with all other records remaining accessible. Since a significant amount of time is required to lock and unlock each data record, however, expending this time for every record accessed may well also reduce the system throughput below acceptable levels.
What is desired is a compromise which locks out a block of records which is a relatively small subset of the entire data base, and yet which includes a significantly related set of individual records. While subset locking can be and has been done arbitrarily, optimum performance requires that several other parameters be met. The overhead involved in placing and detecting data locks must be kept to a minimum and the locked subset should preferably not be arbitrarily chosen.